1. 字符画生成工具
如果让我们手工的来编辑这些字符画,显然是一件非常困难的差事。所以,我们可以借助下面这些工具,轻松地根据文字或图片来生成用于Banner输出的字符画。
- ASCII Generator
ps:
2. K8S部署pod尽量分散在不同节点node上
由于nlp分词服务属于CPU密集型,所以需要在部署的时候尽量使得pod分散在不同node上,已缓解cpu负载,目前发现线上部署每次发布都会到同一节点上,故如下改造
apiVersion: apps/v1 kind: Deployment metadata: name: shenjian-nlp namespace: shenjian-local spec: replicas: 2 selector: matchLabels: project: shenjian-nlp app: shenjian-local template: metadata: labels: project: shenjian-nlp app: fangjia-local buildId: latest spec: // 主要以下起作用 affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: project // 改为自己标签key operator: In values: - shenjian-nlp // 改为自己的名称值 topologyKey: kubernetes.io/hostname
3. Object转JSON日期格式化并保持数据顺序及Value为空Key仍返回
3.1 业务背景
3.2 原因分析
fastjson在Object转JSON的时候,底层采用HashMap, 若有序,则需为LinkedHashMap, 查看源码发现
public JSONObject(int initialCapacity, boolean ordered){ if (ordered) { map = new LinkedHashMap<String, Object>(initialCapacity); } else { map = new HashMap<String, Object>(initialCapacity); } }
可是Object如何转为JSON字符串,查看源码并没有发现转的方法,但是过程中返回的是标准的Map类型,故贴上以下代码
3.3 解决代码
SerializeConfig serializeConfig = new SerializeConfig(); ObjectSerializer serializer = new SimpleDateFormatSerializer(DateUtils.format()); serializeConfig.put(Timestamp.class, serializer); serializeConfig.put(java.sql.Date.class, serializer); serializeConfig.put(Date.class, serializer); if (obj instanceof Map){ JSONObject jsonObject = new JSONObject(16, true); jsonObject.putAll((Map) obj); // 输出key时是否使用双引号,默认为true // 是否输出值为null的字段,默认为false result = JSON.toJSONStringZ(jsonObject, serializeConfig, SerializerFeature.QuoteFieldNames, SerializerFeature.WriteMapNullValue); }
4. Oracle单字段字符串分割由一行改为多行
4.1 项目需求
虚拟核销中,若起草人离职,则已办视图项目客户专员无法查看,故需新增虚拟核销项目对应客户专员查看权限。
SELECT ID,PROJECTNO, CREATOR FROM FORM_MADJ_ACCOUNT WHERE ID IN('8cfa11ee-6ef4-448a-b75b-d7c99c96a76b', 'bf7ca28c-6d97-48b7-ad6e-a7398b5a11e4')
可见,项目中存在多项目编号,|分割,故首先分离项目
4.2 开始分离
SELECT DISTINCT ID, REGEXP_SUBSTR( PROJECTNO, '[^|]+', 1, LEVEL ) AS PROJECTNO -- 搜索正则匹配的串 FROM YDAMS.FORM_MADJ_ACCOUNT WHERE ID='8cfa11ee-6ef4-448a-b75b-d7c99c96a76b' CONNECT BY LEVEL <= REGEXP_COUNT ( PROJECTNO, '|' ) + 1 -- level关键字,代表树形结构中的层级编号 AND ID = PRIOR ID -- 主键ID 表示从下往上查找数据,可以理解为从叶子节点往上查找父级节点点 AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL --该句不变
分离为多行结果:
4.3 注意事项
SELECT DISTINCT id FROM table_name ORDER BY number DESC; --- 运行时往往会报错。因为在order by中出现的number没有在select distinct中出现,所以正确的写法应该是 SELECT DISTINCT id, number FROM table_name ORDER BY number DESC;
4.4 最终SQL语句
SELECT DISTINCT FMA.ID, FMA.PROJECTNO, to_char(fma.create_date,'yyyy-mm-dd hh24:mi:ss') as create_date, FMA.CREATE_DATE CREATE_DATE2 -- 注意这个在ORDER BY中存在,必须写否则会报错 FROM FORM_MADJ_ACCOUNT FMA LEFT JOIN sys_user SU ON FMA.CREATOR = SU.ID LEFT JOIN ( SELECT DISTINCT ID, REGEXP_SUBSTR( PROJECTNO, '[^|]+', 1, LEVEL ) AS PROJECTNO FROM YDAMS.FORM_MADJ_ACCOUNT CONNECT BY LEVEL <= REGEXP_COUNT ( PROJECTNO, '|' ) + 1 AND ID = PRIOR ID AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL ) PSI ON FMA.ID = PSI.ID LEFT JOIN PROJ_INFO pi ON pi.PROJECTNO = PSI.PROJECTNO WHERE FMA.STATUS = 1 AND (SU.LOGINNAME = 'XXX' OR PI.PROJECT_MANAGER_ID = '08BA5F8B2CC4FC29E05010ACBD' ) ORDER BY FMA.CREATE_DATE DESC
5. linux图形化界面安装与卸载
1.yum安装图形界面:
yum groupinstall "X Window System"
2.安装GNOME桌面环境
yum groupinstall "GNOME Desktop Environment"
3.安装KDE桌面环境
yum groupinstall "KDE (K Desktop Environment)"
(如果其中一环境不能安装,尝试用另一环境,亲测)
4.图形界面启动
键入命令 startx
5.图形界面想要卸载:
ps:作为服务器强烈不建议安转图形化界面
6. Linux下Java中文字体不显示(解决图像中文乱码问题)
在Java中可以使用如下判断支持的字体
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] fontFamilies = ge.getAvailableFontFamilyNames(); for (String s : fontFamilies) { System.out.println(s); }
以下方法在fc6下测试通过,假设用户的jre路径为 /usr/java/jdk1.6.0_03/jre/ #cd /usr/java/jdk1.6.0_03/jre/lib/fonts #sudo mkdir fallback 将C:\WINDOWS\Fonts\simsun.ttc拷贝到 /usr/java/jdk1.6.0_03/jre/lib/fonts/fallback文件夹内 ok!
win7中没有,win2003 有simsun.ttc
测试程序
import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Test { public static void main(String[] args) throws Exception { int width = 100; int height = 100; System.err.println(System.getProperty("sun.jnu.encoding")); String s1 = "时段"; // String s2 = new String("你好".getBytes(System.getProperty("sun.jnu.encoding")), "UTF-8"); // String s3 = new String("你好".getBytes("GBK"), System.getProperty("sun.jnu.encoding")); // String s4 = new String("你好".getBytes(), System.getProperty("sun.jnu.encoding")); File file = new File("/home/image.jpg"); Font font = new Font("Serif", Font.BOLD, 10); BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D) bi.getGraphics(); g2.setBackground(Color.WHITE); g2.clearRect(0, 0, width, height); g2.setPaint(Color.RED); FontRenderContext context = g2.getFontRenderContext(); Rectangle2D bounds = font.getStringBounds(s1 , context); double x = (width - bounds.getWidth()) / 2; double y = (height - bounds.getHeight()) / 2; double ascent = -bounds.getY(); double baseY = y + ascent; g2.drawString(s1, (int) x, (int) baseY); ImageIO.write(bi, "jpg", file); } }
7. 浅谈linux系统内存优化
最近发现系统卡顿,排查内存的原因,发现 虚拟内存竟然使用2.5G!!! 系统不卡顿才怪 果断 # 将swap数据转储到内存中,并清空swap里数据(前提,可用内存大于swap已用内存) swapoff -a && swapon -a 2个G清理该命令竟然执行了10分钟。。要耐心等待,结果 防止内存充足仍然使用swap: # 注意不使用交换分区,注意不是禁用 echo "vm.swappiness=0" >> /etc/sysctl.conf # 使其立即生效 sysctl -p
8. 浏览器间接性崩溃服务器400错误排查分析
3.1 问题现象描述
最近谷歌浏览器间接性的崩溃,服务器400错误,所用livebos-tomcat为6.5
3.2 排查过程
多次记录出现错误的日期,搜索上下文,未发现任何服务器报错的信息;
恰好计划tomcat升级为livebos-tomcat8.5,故优先升级tomcat为8.5;
后仍然出现该错误,只不过有了错误提示: java.lang.IllegalArgumentException: Request header is too large
想到最近开发的新功能rest方式调用oa接口,流程传递json串,可能因为json串的过长原因导致;
3.3 解决方案
普通tomcat
在server.xml中
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0" maxHttpHeaderSize =""/>
SpringBoot
在application.properties文件中添加 `server.max-http-header-size=`
今天的文章 全栈工程师工作干货总结(三)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/88902.html