首页 文章 精选 留言 我的

精选列表

搜索[EdgeOneMakersAgent案例],共10000篇文章
优秀的个人博客,低调大师

客户案例:敏捷转型的二三事儿

在接触敏捷的这一段时间内,也听了不少曲折离奇的故事。很少有团队在转型敏捷的时候,没有系统学习或外力支持就能做的风生水起。毕竟这里面的“水”很深。 比较巧合的是,我所供职的公司目前便在做敏捷转型。不过,我们的转型过程并不是顺风顺水的。因此,在转型过程中,我们注意到的那些“事儿”,你也一定关心。 领导是在充分认识到敏捷的益处之后,决定转型敏捷的。因为敏捷所提倡的“拥抱变化”更适应公司的开发过程:尽管公司是 To B 企业,但用户参与度依旧很高,这就导致产品经理在与用户代表对接的过程中,会不断地产生产品需求更改的情况。既然是这样,那么沿用瀑布开发的模式就显得有些笨重了。 困难一:全员敏捷 决定要转型敏捷之后,如何让公司全员了解敏捷呢?第一个困难出现了。 针对这一问题,公司开始引入敏捷方法论的知识,推动全员进行敏捷方法论的学习,包括制定学习计划来督促大家的学习进度:观看敏捷相关视频、阅读敏捷书籍等。在有了一定的理论知识之后,敏捷开发的推进就稍显轻松。 顾虑到除研发部门外,其他业务部门转型敏捷的优先级并不算高,公司决定先将研发部门划为试点部门,小范围试行敏捷。所以就出现了每天早上,其他部门的同事都要去看一看研发部门有没有在开站立会议的现象。尤其是将 Scrum 流程融入到日常办公中时,这给同事们带来了一种之前从未体验过的新鲜感。这种新鲜感让其他业务部门不仅有了对敏捷一探究竟的好奇心,还开始憧憬自己部门转型敏捷之后的“愉快生活”。 显然,研发部门的敏捷转型成功了,这带给了公司上下莫大的信心。紧接着,其余的业务部门也开始了敏捷转型。实施了一段时间之后,大家发现,转型敏捷是一个非常正确的决策。在大家都沉浸在“转型成功”的欢天喜地的氛围中时,领导又拧紧了眉毛。 困难二:流于形式 领导发现,虽然各方面的形式做到位了,但公司实际并没有明显的业务价值的提高,问题出在哪里? 考虑了一下,领导选择请一位敏捷教练,让他到公司实际考察,帮助捋清到底哪里产生了问题。敏捷教练的到来让公司有了意外的收获。教练在各个业务部门之间转了几天,了解了我们的现有敏捷模式,随后指出了几点问题: 站立会议流于形式,其他人并没有认真听主讲人的工作内容及问题; 看板的应用不规范,无法得到及时更新,不能传递相应价值; 工时估算随意,无法体现任务价值等。 除此之外,敏捷教练还纠正了很多我们在工作中的小问题。在教练的帮助下,虽然大大小小的会议依旧不少,但在不断迭代的过程中,大家都很明显地发现自己的工作计划变得更加完善详实了,其间如果出现与计划不相符的结果,也能很快地找到问题所在。 可以说,我们转型没有失败的很大原因,在于我们将小范围的试点扩大到了整个公司的范围内。除自己公司之外,我也有看到过其他转型敏捷的公司,只是在某一部门中推行敏捷,尽管小范围内的敏捷转型成功了,但它也有相应的局限性,会阻碍敏捷带来的深远影响和战略价值。 除去转型的准备工作,公司也拿出了很多的时间来巩固转型的成果:比如开展各种敏捷培训,定期开展工作回顾与总结等,这些无一不在丰富我们对敏捷的认知。 直到现在,我们虽还未转型成功,但也算小有心得。公司员工的愿景一致,是否借助外部力量,还是通过管理工具进行调整,这些都还是次要。最重要的是,公司是否有转型敏捷的毅力与魄力,毕竟这是一场真正的持久战。 往期文章: 从科学管理到丰田生产模式,精益是如何产生的? 第15届敏捷状态报告:敏捷引领全球数字化转型 设计思维 VS 敏捷:两者有什么区别?

优秀的个人博客,低调大师

关于limits生效的案例一两只

第一个问题limits.conf的限制在/proc/pid/limits中未生效 # cat /proc/3606/limits Limit Soft Limit Hard Limit Units Max processes 31202 31202 processes Max open files 1024 4096 files 在Centos7 & ubuntu 系统中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作用域缩小了。/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。因此登录用户的限制,通过/etc/security/limits.conf与/etc/security/limits.d下的文件设置即可。 对于systemd service的资源设置,则需修改全局配置,全局配置文件放在/etc/systemd/system.conf和/etc/systemd/user.conf,同时也会加载两个对应目录中的所有.conf文件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.confsystem.conf是系统实例使用的,user.conf是用户实例使用的。 vim /etc/systemd/system.conf DefaultLimitNOFILE=100000 DefaultLimitNPROC=65535 修改并重启即可 # cat /proc/3613/limits Limit Soft Limit Hard Limit Units Max processes 65535 65535 processes Max open files 100000 100000 files 第二个问题在服务里面设置LimitNOFILE=infinity为什么不是无穷大?在服务里面设置LimitNOFILE=infinity 后,通过查看pid的limit发现openfile是65536 ,而不是无穷大查看服务配置 [root@iZwz98aynkjcxvtra0f375Z ~]# cat /etc/systemd/system/multi-user.target.wants/docker.service |grep -vi "^#"|grep -vi "^$" [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com BindsTo=containerd.service After=network-online.target firewalld.service containerd.service Wants=network-online.target Requires=docker.socket [Service] Type=notify ExecStart=/usr/bin/dockerd -H fd:// ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always StartLimitBurst=3 StartLimitInterval=60s LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TasksMax=infinity Delegate=yes KillMode=process [Install] WantedBy=multi-user.target 查看配置效果 # cat /proc/11019/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 31202 31202 processes Max open files 65536 65536 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 31202 31202 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us 这个是systemd的bug,低于240的版本需要手动设置才可以生效LimitNOFILE=102400https://github.com/systemd/systemd/issues/6559第三个问题为什么openfile不能设置为unlimited [root@iZwz98aynkjcxvtra0f375Z ~]# ulimit -n 65535 [root@iZwz98aynkjcxvtra0f375Z ~]# ulimit -n unlimited -bash: ulimit: open files: cannot modify limit: Operation not permitted 原因是 centos7里 openfile不能大于nr_open [root@iZwz98aynkjcxvtra0f375Z ~]# cat /proc/sys/fs/nr_open 1048576 [root@iZwz98aynkjcxvtra0f375Z ~]# ulimit -n 1048577 -bash: ulimit: open files: cannot modify limit: Operation not permitted [root@iZwz98aynkjcxvtra0f375Z ~]# ulimit -n 1048576 [root@iZwz98aynkjcxvtra0f375Z ~]# ulimit -n 1048576 关于file-max nr_open file_nr的解释 可参考https://www.kernel.org/doc/Documentation/sysctl/fs.txt外部文档https://www.cnblogs.com/zengkefu/p/5635153.htmlhttps://blog.csdn.net/google0802/article/details/52304776http://blog.cloud.360.cn/post/tuning-your-system-for-high-concurrency.html

优秀的个人博客,低调大师

java技术案例--封装JDBC工具类

JDBC简介-JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 -Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。 -JDBC可以在各种平台上使用Java,如Windows,Mac OS和各种版本的UNIX。 -JDBC库包括通常与数据库使用相关的下面提到的每个任务的API。 JDBC实现验证登录代码思路*键盘输入用户名和密码,对比数据库中的用户信息,判断是否登录成功*1、连接数据库 *MyJDBCUtils.getConnection() *2、获取请求对象stmt *conn.createStmtement() *3、创建键盘对象,获取用户名和密码 *3.1创建键盘录入对象 *3.2提示用户输入 *3.3获取用户输入内容 *4、编写SQL语句,把用户名和密码放入SQL语句中 *5、执行查询,获取查询结果 *stmt.executeQuery(sql); *6、根据查询结果判断登录是否成功*7、关闭连接 Java工具类在java开发过程中,代码中时常用到一些Scanner、Random一样的类,他们是键盘录入,生成随机数的类,像一个工具一样,在java中被称为工具类。 我们在编写自己的代码时,有的代码功能和java工具类似,比如连接数据库、验证登录,时长会用得到,每次都书写一次太麻烦,我们可以尝试编写自己的工具类,每次用到的时候直接导包调用就行,能提高我们的开发效率。 封装JDBC工具类加入获取数据库连接对象的方法加入释放连接的方法代码如下: 工具类代码: package com.qianfeng.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * JDBC工具类 * 有获取连接的方法 * @author dushine */ public class JDBCUtil { /** * 获取数据库连接的方法 * @return Connection conn * @throws SQLException */ public static Connection getConnection() throws SQLException { String url = "jdbc:mysql://localhost:3306/class?useSSL=false"; String user = "root"; String password = "root"; Connection conn = DriverManager.getConnection(url,user,password); return conn; } /** * 释放连接的方法 * @param conn * @throws SQLException */ public static void releaseSourse(Connection conn) throws SQLException { if (conn != null) { conn.close(); } } /** * 释放连接的方法 * @param conn 数据库连接对象 * @param stmt 执行SQL语句的对象 * @throws SQLException */ public static void releaseSourse(Connection conn,Statement stmt) throws SQLException { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } /** * 释放连接的方法 * @param conn 数据库连接对象 * @param stmt 执行SQL语句的对象 * @param resultSet 执行SQL语句的返回的结果集 * @throws SQLException */ public static void releaseSourse(Connection conn,Statement stmt,ResultSet resultSet) throws SQLException { if (resultSet != null) { resultSet.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } 测试类代码: package com.qianfeng.demos; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.Scanner; import com.qianfeng.util.JDBCUtil; public class Demo04 { public static void main(String[] args) throws Exception { /** * 登录注册 * 获取用户输入内容 * 把输入的内容当做条件查询数据库中的内容 */ Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String name = sc.nextLine(); System.out.println("请输入密码:"); String pwd = sc.nextLine(); // 注册驱动 Class.forName("com.mysql.jdbc.Driver"); /* String url = "jdbc:mysql://localhost:3306/class?useSSL=false"; String user = "root"; String password = "root"; // 获取和数据库的连接 Connection conn = DriverManager.getConnection(url, user, password);*/ Connection conn = JDBCUtil.getConnection(); // 使用连接对象获取执行sql的对象 Statement stmt = conn.createStatement(); // 编写SQL语句 String sql = "select * from userinfo where username='"+name+"' and password='"+pwd+"'"; System.out.println(sql); // 执行SQL语句,获取返回结果 ResultSet resultSet = stmt.executeQuery(sql); if (resultSet.next()) { System.out.println("登陆成功!"); } else { System.out.println("用户名或密码错误!"); } JDBCUtil.releaseSourse(conn, stmt, resultSet); sc.close(); } }

优秀的个人博客,低调大师

awk高级企业级使用案例

一、背景: 以某物联网企业,传感器设备实时数据消费服务(Kafka-consumer)为例,调试筛选处理耗时的主题。 1.原始日志格式(logback输出的): 2018-07-11 11:49:22.413 INFO 29244 ---[TW_safeclound_elec_line_v-1531280885818] c.s.s.s.l.TimeoutInvokeMethodAspect :消费处理耗时: 10148 ms, method=ConsumerElecLineVDataListener.lineVData(..), args={"addr":"11111118","bid":"QQBE","cid":"BLWY","dataType":"ELE_R_LV","id":"11111118,85,117,ELE_R_LV,1531280962413","lineAB":396.77,"lineBC":395.75,"lineCA":396.42,"meterType":"117","order":"85","timestamp":1531280951758} 2.使用tail+awk命令进行耗时执行方法筛选: [root@web-prod ~]# tail -f/mnt/disk1/sink/logs/sink.log|grep耗时| awk -F'''$10>200&&$10<500{print$1,$2,$6,$10,$11}' 2018-07-14 22:59:40.163 [TW_safeclound_largestDemand-1531512341755] 441 ms, 2018-07-14 22:59:40.516 [TW_safeclound_rate_v-1531512332686] 363 ms, 2018-07-14 22:59:40.665 [TW_safeclound_rate_i-1531512317893] 375 ms, 2018-07-14 22:59:40.866 [TW_safeclound_water-1531512518874] 332 ms, ... 3.注释: a.其中 awk的-F 参数表示:日志字符串分隔符,默认为''空格; b.$10>100表示我要筛选耗时大于 100 毫秒的日志; c.{print$1,$2,$6,$10,$11}表示打印被awk分隔后的第1段(日期)、第2段(时间)、第6段(主题)、第10段(耗时)、第11段字符串(耗时单位); d.其中$10>200&&$10<500表示我要筛选耗时在200~500之前的消费主题;

优秀的个人博客,低调大师

应用数据迁移网络异常案例分析

问题描述及现象 某客户计划通过P2V工具迁移500台左右镜像至阿里云华北1(青岛),在应用数据迁移传输过程中是把用户的系统盘、数据盘的数据通过公网传输到阿里云中转ECS实例上。 某客户6.12-6.13号批量迁移100台基本正常,从2018.6.13号晚10点左右开始连接阿里云中转ECS实例就出现中断,现象为在客户端telnet中转ECS实例8703端口提示Connection closed by foreign host. 但检查中转ECS实例的http 服务8080正常,而且其它地方测试中转ECS实例8073端口、8080端口服务均正常。 6.20-6.21恢复正常后,继续批量迁移了130台左右,但6.25号开始又问题重现。 问题处理过程 6.15号 12点左右开始,客户再次重现问题。 在客户侧telnet 10次都失败了,在阿里云ECS

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册