首页
归档
动态
友链
关于
Search
1
网易云音乐黑胶会员月月免费赠送
2,331 阅读
2
十年之约RSS聚合订阅服务上线
2,207 阅读
3
rsyslogd内存占用过高解决方案
1,853 阅读
4
Nginx反代MinIO后,上传文件签名异常
1,828 阅读
5
工资发放日的区别
1,822 阅读
零碎
标本
码海
工具
其他
登录
Search
标签搜索
北京
摄影
Java
旅行
生活
学习笔记
教程
Linux
服务器
软件
SpringBoot
Windows
日记
服务
Spring
系统
福利
数据库
SQL
Oracle
萧瑟
累计撰写
173
篇文章
累计收到
1,057
条评论
首页
栏目
零碎
标本
码海
工具
其他
页面
归档
动态
友链
关于
搜索到
40
篇与
码海
的结果
2021-06-15
git for windows下的Filename too long
使用 git 提交代码的时候出现了错误:fatal: adding files failed百度查资料说文件没有保存,但是文件都是正常的,细看一下文件的详细错误,提示的内容是 Filename too long 原因是git可以创建4096长度的文件名,而Windows的文件名最大长度是260,因为git用了旧版本的windows api,为此踩了个坑。解决方案执行以下命令即可。git config --global core.longpaths true
2021年06月15日
208 阅读
1 评论
2021-05-29
Java poi设置页脚页码奇偶数不同展示
最近遇到一个问题,就是导出word设置页脚的页码且奇偶数不同,效果如下。 贴一下代码,记录一下。/** * 创建页脚 * * @param document doc对象 * @throws IOException * @throws NoSuchFieldException * @throws IllegalAccessException */ public static void createFooter(XWPFDocument document) throws IOException, NoSuchFieldException, IllegalAccessException { Field _settings = XWPFDocument.class.getDeclaredField("settings"); _settings.setAccessible(true); XWPFSettings xwpfsettings = (XWPFSettings) _settings.get(document); Field _ctSettings = XWPFSettings.class.getDeclaredField("ctSettings"); _ctSettings.setAccessible(true); org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSettings ctSettings = (org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSettings) _ctSettings.get(xwpfsettings); ctSettings.addNewEvenAndOddHeaders(); XWPFFooter footer = document.createFooter(HeaderFooterType.DEFAULT); //奇数 XWPFParagraph paragraph = footer.createParagraph(); paragraph.setAlignment(ParagraphAlignment.RIGHT); XWPFRun run; run = paragraph.createRun(); run.setText("— "); CTFldChar fldChar = run.getCTR().addNewFldChar(); fldChar.setFldCharType(STFldCharType.Enum.forString("begin")); setXWPFRunStyle(run, "宋体", 14); CTText ctText = run.getCTR().addNewInstrText(); ctText.setStringValue("PAGE \\* MERGEFORMAT"); ctText.setSpace(SpaceAttribute.Space.Enum.forString("preserve")); setXWPFRunStyle(run, "宋体", 14); fldChar = run.getCTR().addNewFldChar(); fldChar.setFldCharType(STFldCharType.Enum.forString("end")); run.setText(" —"); //偶数 XWPFParagraph paragraph1 = document.createFooter(HeaderFooterType.EVEN).createParagraph(); paragraph1.setAlignment(ParagraphAlignment.LEFT); XWPFRun run1; run1 = paragraph1.createRun(); run1.setText("— "); CTFldChar fldChar1 = run1.getCTR().addNewFldChar(); fldChar1.setFldCharType(STFldCharType.Enum.forString("begin")); setXWPFRunStyle(run1, "宋体", 14); CTText ctText1 = run1.getCTR().addNewInstrText(); ctText1.setStringValue("PAGE \\* MERGEFORMAT"); ctText1.setSpace(SpaceAttribute.Space.Enum.forString("preserve")); setXWPFRunStyle(run1, "宋体", 14); fldChar1 = run1.getCTR().addNewFldChar(); fldChar1.setFldCharType(STFldCharType.Enum.forString("end")); run1.setText(" —"); } /** * 设置页脚的字体样式 * * @param r1 段落元素 * @param font 字体 * @param fontSize 字体大小 */ private static void setXWPFRunStyle(XWPFRun r1, String font, int fontSize) { r1.setFontSize(fontSize); CTRPr rpr = r1.getCTR().isSetRPr() ? r1.getCTR().getRPr() : r1.getCTR().addNewRPr(); CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr.addNewRFonts(); fonts.setAscii(font); fonts.setEastAsia(font); fonts.setHAnsi(font); }参考文档: poi设置word奇偶页不同-segmentfault
2021年05月29日
332 阅读
0 评论
2021-05-27
Java 基础类型互相转换
Java 基础类型互相转换,int,String 转Integer、String 转Integer、String、Integer转为int、Integer转换为float, double, long、所有类型转String
2021年05月27日
141 阅读
2 评论
2021-05-24
yml基本语法
YML是什么YAML (YAML Aint Markup Language)是一种标记语言,通常以.yml或者.yaml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。可用于如: Java,C/C++, Ruby, Python, Perl, C#, PHP等。YML的优点YAML易于人们阅读。YAML数据在编程语言之间是可移植的。YAML匹配敏捷语言的本机数据结构。YAML具有一致的模型来支持通用工具。YAML支持单程处理。YAML具有表现力和可扩展性。YAML易于实现和使用。YML语法1.约定 k: v 表示键值对关系,冒号后面必须有一个空格使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的大小写敏感缩进时不允许使用Tab键,只允许使用空格。松散表示,Java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。2.键值关系 (以Java语言为例,其它语言类似)对于键与值主要是看能否表示以下内容。普通的值(数字、字符串、布尔)、日期、对象、数组、集合等。1) 普通值(字面量)k: v:字面量直接写;字符串默认不用加上单引号或者双绰号;“”: 双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据name1: zhangsan name2: 'zhangsan \n lisi' name3: "zhangsan \n lisi" age: 18 flag: true2)日期date: 2019/01/013)对象(属性和值)、Map(键值对)在下一行来写对象的属性和值的关系,注意缩进people: name: zhangsan age: 20行内写法:people: {name:zhangsan,age: 20}4)数组、list、set用- 值表示数组中的一个元素pets: - dog - pig - cat行内写法:pets: [dog,pig,cat]5)数组对象、list对象、set对象peoples: - name: zhangsan age: 22 - name: lisi age: 20 - {name: wangwu,age: 18}6)Java代码示例Java代码(省略get,set方法)public class Person { private String lastName; private Integer age; private Boolean boss; private Date birth; private Map<String,Object> maps; private List<Dog> lists; private Dog dog; private String[] arr; } public class Dog { private String name; private Integer age; }对应的ymlperson: boss: false maps: k1: v1 k2: 14 lists: - name: d1 age: 2 - name: d2 age: 3 - {name: d3,age: 4} birth: 2017/12/15 dog: name: p_dog age: 15 age: 13 last-name: 张三 arr: [s1,s2,s3]3.文档块对于测试环境,预生产环境,生产环境可以使用不同的配置,如果只想写到一个文件中,yml与是支持的,每个块用----隔开server: port: 8081 spring: profiles: active: prod #激活对应的文档块 --- server: port: 8083 spring: profiles: dev #指定属于哪个环境 --- server: port: 8084 spring: profiles: prod #指定属于哪个环境
2021年05月24日
169 阅读
0 评论
2021-05-23
SpringBoot yml配置文件注入List和Map
SpringBoot 在yml配置文件注入List和Map,可动态修改,方便快速。
2021年05月23日
451 阅读
0 评论
2021-05-21
Java Spring @autowired和@resource注解的区别
区别1、@Autowired注解由Spring提供,只按照byType注入;@resource注解由J2EE提供,默认按照byName自动注入。2、@Autowired默认按类型进行装配,@Resource默认按照名称进行装配。Spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解。如:@Resource、@PostConstruct及@PreDestroy@Autowired由Spring提供,只按照byType注入@Resource由J2EE提供,默认按照byName自动注入@Resource有两个重要的属性:name和typeSpring将@Resource注解的name属性解析为bean的名字,type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。@Resource装配顺序:(1)如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常(2)如果指定了name,则从Spring上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常(3)如果指定了type,则从Spring上下文中找到类型匹配的唯一bean进行装配,找不到或找到多个,都抛出异常(4)如果既没指定name,也没指定type,则自动按照byName方式进行装配。如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入。使用区别(1)@Autowired与@Resource都可以用来装配bean,都可以写在字段或setter方法上(2)@Autowired默认按类型装配,默认情况下必须要求依赖对象存在,如果要允许null值,可以设置它的required属性为false。如果想使用名称装配可以结合@Qualifier注解进行使用。(3)@Resource,默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行名称查找。如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。推荐使用@Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,减少了与Spring的耦合。
2021年05月21日
184 阅读
0 评论
2021-05-21
Java Map中forEach小结
HashMapHashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。AbstractMap实现了Map接口,Map接口里面有一个forEach方法。官方解释对此映射中的每个条目执行给定操作,直到所有条目已处理或操作引发异常。除非由实现类指定,操作将在入口集迭代的顺序(如果指定了迭代顺序)。操作引发的异常将中继到调用方。解读使用了try catch 抛出的异常为ConcurrentModificationException,标示在线程并发进行读写的时候会出现异常,即,不支持并发操作。使用方法Map<Object, Object> map = new HashMap<>(); map.put("name", "xiaose"); map.put("gender", "男"); map.put("phone", "18888888888"); map.put(null, null); //1.Map的迭代 // 通用的Map迭代方式 System.out.println("==============Map的迭代======================"); for (Map.Entry<Object, Object> entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } System.out.println("===================================="); // JDK8的迭代方式 map.forEach((key, value) -> { System.out.println(key + ":" + value); });输出内容==============Map的迭代====================== null:null gender:男 phone:18888888888 name:xiaose ==================================== null:null gender:男 phone:18888888888 name:xiaose
2021年05月21日
185 阅读
0 评论
2021-05-07
rm -rf 后的常见处理
删库跑路吧~
2021年05月07日
221 阅读
0 评论
2021-04-29
Linux打包压缩
打包成tar.gz格式压缩包# tar -zcvf test.tar.gz /test解压tar.gz格式压缩包# tar zxvf test.tar.gz打包成tar.bz2格式压缩包# tar -jcvf test.tar.bz2 /test解压tar.bz2格式的压缩包# tar jxvf test.tar.bz2压缩成zip格式# zip -q -r renwolesshel.zip renwolesshel/解压zip格式的压缩包# unzip test.zip //防止中文乱码 # unzip -O CP936 test.zip
2021年04月29日
175 阅读
0 评论
2021-04-28
Docker容器进入的4种方式
在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。进入Docker容器比较常见的几种做法如下:使用docker attach使用SSH使用nsenter使用exec一、使用docker attach进入Docker容器Docker提供了attach命令来进入Docker容器。接下来我们创建一个守护态的Docker容器,然后使用docker attach命令进入该容器。sudo docker run -itd ubuntu:14.04 /bin/bash然后我们使用docker ps查看到该容器信息,接下来就使用docker attach进入该容器sudo docker attach 44fc0f0582d9 可以看到我们已经进入到该容器中了。 但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。因为这个原因,所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。二、使用SSH进入Docker容器在生产环境中排除了使用docker attach命令进入容器之后,相信大家第一个想到的就是ssh。在镜像(或容器)中安装SSH Server,这样就能保证多人进入容器且相互之间不受干扰了,相信大家在当前的生产环境中(没有使用Docker的情况)也是这样做的。但是使用了Docker容器之后不建议使用ssh进入到Docker容器内。关于为什么不建议使用,请参考如下文章:为什么不需要在 Docker 容器中运行 sshd三、使用nsenter进入Docker容器在上面两种方式都不适合的情况下,还有一种比较方便的方法,即使用nsenter进入Docker容器。关于什么是nsenter请参考如下文章:https://github.com/jpetazzo/nsenter在了解了什么是nsenter之后,系统默认将我们需要的nsenter安装到主机中,如果没有安装的话,按下面步骤安装即可(注意是主机而非容器或镜像)具体的安装命令如下:$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz $ tar -xzvf util-linux-2.24.tar.gz $ cd util-linux-2.24/ $ ./configure --without-ncurses $ make nsenter $ sudo cp nsenter /usr/local/bin 安装好nsenter之后可以查看一下该命令的使用。nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。可以使用docker inspect命令来拿到该PID。docker inspect命令使用如下:sudo docker inspect --help inspect命令可以分层级显示一个镜像或容器的信息。比如我们当前有一个正在运行的容器。可以使用docker inspect来查看该容器的详细信息。$ sudo docker inspect 44fc0f0582d9 由其该信息非常多,此处只截取了其中一部分进行展示。如果要显示该容器第一个进行的PID可以使用如下方式$ sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9在拿到该进程PID之后我们就可以使用nsenter命令访问该容器了。$ sudo nsenter --target 3326 --mount --uts --ipc --net --pid $ sudo nsenter --target 3326 --mount --uts --ipc --net --pid 其中的3326即刚才拿到的进程的PID当然,如果你认为每次都输入那么多参数太麻烦的话,网上也有许多做好的脚本供大家使用。地址如下:http://yeasy.gitbooks.io/docker_practice/content/container/enter.htmlhttp://www.tuicool.com/articles/eYnUBrR四、使用docker exec进入Docker容器除了上面几种做法之外,docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用:$ sudo docker exec --help 接下来我们使用该命令进入一个已经在运行的容器$ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash 原文链接:https://www.cnblogs.com/xhyan/p/6593075.html
2021年04月28日
208 阅读
0 评论
1
...
3
4