- helm 部署 Kube-Prometheus + Grafana + 钉钉告警部署 Kube-Prometheus
zxj19880502
grafanaprometheus
背景角色IPK8S版本容器运行时k8s-master-1172.16.16.108v1.24.1containerd://1.6.8k8s-node-1172.16.16.109v1.24.1containerd://1.6.8k8s-node-2172.16.16.110v1.24.1containerd://1.6.8安装kube-prometheusmkdir-p/data/yaml/kub
- k8s入门到实战(十)—— CronJob详细介绍及使用示例
一弓虽
k8s学习kubernetes容器云原生
CronJob什么是CronJob在k8s中,CronJob是一种用于定期执行任务的资源对象。它基于Cron表达式,允许您在指定的时间间隔内自动运行容器化的任务。CronJob可以定义以下属性:schedule:指定任务执行的时间表,使用标准的Cron表达式语法。例如,“0****”表示每小时执行一次任务。jobTemplate:定义要执行的任务的模板,通常是一个Pod模板。这个模板包含了任务所需
- 利用K8S Statefulset搭建Etcd集群 - 本地存储
夜晓码农
大数据Dockerkubernetesetcd容器
目录概述测试环境yaml配置service.yamlcluster.yamlQ&A参考链接概述公司因项目需要使用K8S部署ETCD集群供其他业务调用,网上搜索了解了下,一般K8S搭建ETCD集群大部分都是使用EtcdOperator来搭建。但是公司的项目运行在离线ARM架构平台,直接使用网上EtcdOperator代码,他们提供的镜像都是x86_64架构,经过Opeartor编译等尝试,最后都以失
- k8s kubectl 常用命令
_Johnny_
kuberneteskuberneteslinux容器
查询节点nodekubectlgetnode查询节点标签kubectlgetnode--show-labels查询所有podkubectlgetpod-A查询指定命名空间下的podkubectlgetpod-nproject-3428查询pod详细kubectl-nproject-3428getpodxxxxxxxxxxxx-owidePOD打标签kubectllabelpodmypodapp=w
- spring cloud gateway k8s优雅启停
luffy_1993
kubernetes容器云原生
通过配置readiness探针和preStophook,实现优雅启动和停止(滚动部署)1.k8s工作负载配置readinessProbe:httpGet:path:/datetimeport:8080scheme:HTTPinitialDelaySeconds:30timeoutSeconds:1periodSeconds:30successThreshold:1failureThreshold:
- 高可用系统有哪些设计原则
没有女朋友的程序员
架构师架构
1.降级主动降级:开关推送被动降级:超时降级异常降级失败率熔断保护多级降级2.限流nginx的limit模块gatewayredis+Lua业务层限流本地限流gua分布式限流sentinel3.弹性计算弹性伸缩—K8S+docker主链路压力过大的时候可以将非主链路的机器给主链路的应用用上4.流量切换多机房环境:DNS端域名切换入口Clien端流量调度虚IPHaProxyLVS负载均衡应用层Ngi
- 使用 BPF 监控 Kubernetes 集群(k8s BPF 工具 kubectl-trace认知
山河已无恙
K8s&kubelct插件BPFkubernetes容器云原生
写在前面学习中遇到,整理分享,博文内容涉及:kubectl-trace安装,在节点,容器中如何使用需要注意的问题:job闪完成,一直Pending状态解决理解不足小伙伴帮忙指正不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树kubectl-trace安装┌──[
[email protected]]-[~/ansi
- 云原生部署手册01:构建k8s集群并配置持久化存储
吴智深
云原生kubernetes容器
写在前面:k8s弃用docker的影响其实没那么大k8s通过dockershim对docker的支持从1.20版本后就已经移除,仅支持符合ContainerRuntimeInterface(CRI)的容器运行环境,比如containerd。containerd本身就是docker底层的容器运行环境,只不过docker在containerd的基础上增加了符合人类操作的接口。docker构建的镜像并不
- 容器化应用的健康探针(Docker\Docker-Compose\K8S)——筑梦之路
筑梦之路
linux系统运维虚拟化云计算dockerkubernetes容器
Docker应用健康探针:#Dockerfile构建时加入健康检查探针示例如下:FROMnode:11.15.0-alpineMAINTAINERwollensWORKDIR/codeRUNapkupdate&&apkupgrade&&\apkadd--no-cachebashgitcurlHEALTHCHECK--interval=2m--timeout=10s--start-period=5s
- 【使用docker 搭建Java仓库 nexus 】
小吴小吴bug全无
kubernetesdockerjava容器kubernetes
yaml---apiVersion:apps/v1kind:StatefulSetmetadata:annotations:k8s.eip.work/displayName:Nexus服务k8s.eip.work/ingress:'false'k8s.eip.work/service:ClusterIPk8s.eip.work/workload:nexuslabels:k8s.eip.work/l
- 记录一次filebeat日志丢失的问题
无聊的刀刀
在java化项目中,部署到k8s集群后,一度出现无法定位问题的情况。起初怀疑是日志调用链改造导致的,也修复了一些问题,但没有解决根本问题问题表现日志搜集不够实时在k8s中执行kubectllogs--tail=500test-6bb5648c4c-4fmrr-ntestns随机取一条记录,在kibana界面无法查询日志没有被搜集上个问题或许过一段时间能查询到,但有些日志则是完全无法查到,就算过了1
- k8s Yaml语法解析
Starts️
哈希算法算法
YAML是一个类似XML、JSON的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称"一种人性化的数据格式语言"。YAML的语法比较简单,主要有下面几个:1、大小写敏感2、使用缩进表示层级关系3、缩进不允许使用tab,只允许空格(低版本限制)4、缩进的空格数不重要,只要相同层级的元素左对齐即可5、'#'表示注释YAML支持以下几种数据类型:1、纯量:单个
- 关于k8s中 storageclass 的 is-default-sc 默认存储设置
网络飞鸥
Kuberneteskubernetes容器云原生
为什么要改变默认存储类?取决于安装模式,你的Kubernetes集群可能和一个被标记为默认的已有StorageClass一起部署。这个默认的StorageClass以后将被用于动态的为没有特定存储类需求的PersistentVolumeClaims配置存储。更多细节请查看PersistentVolumeClaim文档。如果准入控制器插件被启用,则管理员可以设置一个默认的StorageClass。所
- k8s之DashBoard
蓝桉 释槐
kubernetes容器云原生
一,详述:基于web的用户界面二,部署:1),下载yaml并运行wgethttps://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml2),修改kubernetes-dashboard的Service类型apiVersion:v1kind:Namespacemetadata:name
- k8s安全控制、授权管理介绍
树下一少年
Kuberneteskubernetes权限云原生RBACk8s安全控制
目录一.Kubernetes安全控制介绍1.客户端认证操作2.访问对象资源依次流程二.授权管理介绍1.AlwaysDeny2.AlwaysAllow3.ABAC4.Webhook5.Node6.RBAC三.Role解释1.Role和ClusterRole2.Rolebinding和ClusterBinding3.Rolebinding和ClusterRole四.准入控制1.命令格式2.可配置控制器
- k8s排错指南
duansamve
Kuberneteskuberneteslinux容器
一、排查顺序:查看node状态→查看pod状态→查看container状态→查看service流量是否路由到pod→查看ingress配置是否正确→查看kubelet系统日志二、具体排查思路:1、排查node故障:#查看各节点状态:kubectlgetnode#查看node事件:kubectldescribenodeNode本身宕机或者Kubelet无法启动会导致Node上面的Pod无法正常运行已
- 阿里云k8s内OSS报错UnKnownHost。
南宫文凯
kubernetes阿里云docker
这个问题就是链接不上oss属于网络问题:1.排查服务器在服务器(ecs)上直接pingoss地址看是否能够通。不通就要修改dns和hosts(这个不说,自己网上查)2.排查容器进去ping一下你的容器是否能访问到oss//oss的地址这个要是不通的话就要修改k8s的配置文件(如果显示没有ping这个语法)就要在打docker包的时候加进去。(加到dockerFile里)RUNapt-getupda
- docker-swarm集群管理命令
chenzfp
Dockerdockerjava
为什么选择swarm集群?灵魂疑问:同样是集群,为什么选择dockerswarm,而不不选择k8s或者k3s?我的需求场景:不想直接用docker或者java-jar直接跑,修改前是使用java-jar方式,这两种方式想要动态扩容和动态负载均衡在没有比较好的CI/CD工具的条件下还是比较麻烦的。当前个人负责的项目基本上后端只有一个人,运维也比较费时费力。就想着搭建一个集群,对比了k8s、k3s和d
- Mac OS 安装 CGO 交叉编译环境 x86_64-linux-gnu-gcc
shida_csdn
疑难杂症linuxgnu运维
在MacOS平台编译kubelet遇到如下错误:#makeWHAT=cmd/kubeletKUBE_BUILD_PLATFORMS=linux/amd64+++[022214:39:32]Buildinggotargetsforlinux/amd64k8s.io/kubernetes/cmd/kubelet(non-static)#runtime/cgocgo:Ccompiler"x86_64-l
- K8s replicaset 个人理解及文档搬运总结(updating)
huaiyingdetective
kubernetes容器云原生
ReplicaSet的目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的Pod的可用性。何时使用ReplicaSetReplicaSet确保任何时间都有指定数量的Pod副本在运行。然而,Deployment是一个更高级的概念,它管理ReplicaSet,并向Pod提供声明式的更新以及许多其他有用的功能。因此,我们建议使用Deployment而不
- k8s集群的CA证书过期处理
百战天王
kubernetes云原生
文章目录制作延期的CA证书获取CA全名准备签发申请配置生成新CA验证并替换CA更新master组件的CA配置kube-apiserverkube-controller-managerkube-schedulerkube-admin检查证书过期时间更新ServiceAccountsecret更新node组件配置的CA更新kubelet连接配置签发kubelet自动申请的客户端证书不改变原CA的公私钥
- Java云计算k8s
weixin_51551879
java
云计算k8sk8s简介容器技术的发展使用kubeadm安装k8skubectlKubernetes架构k8s节点节点与控制面之间的通信控制器k8skubectl命令详解k8s容器Kubernetes对象Kubernetes对象管理Kubernetes对象管理指令式命令Kubernetes对象管理指令式对象配置k8s对象管理声明式对象配置使用Kustomize对Kubernetes对象进行声明式管理
- 云原生周刊:CNCF 宣布 Falco 毕业|2024.3.4
云计算
开源项目推荐ldap-operator用于部署和管理LDAP目录的KubernetesOperator。UpdatecliUpdatecli是一个用于应用文件更新策略的工具。每个应用程序“运行”时都设计为可在任何地方使用,它会检测是否需要使用自定义策略更新值,然后根据该策略应用更改。AlazAlaz是一个开源DdosifyeBPF代理,可以检查和收集Kubernetes(K8s)服务流量,无需代码
- 3、云原生安全之falco的部署
划水的小白白
云原生安全云原生安全
文章目录1、helm安装2、拉去镜像失败与解决3、安装faclo4、安装nfs服务器,配置k8s的持久卷4.1、创建nfs服务器,4.2、部署master节点(nsf服务的客户端)4.3、pv与pvc4.4、假设pv和pvc的配置文件出错了5、安装falcosidekick可视化(建议跳过,直接使用6)6、安装faclo与falcosidekick7、创建自定义检测规则7.1、检测定时任务的查询与
- k8s运维问题整理
筱光
kubernetes运维容器
1.宕机或异常重启导致etcd启动失败服务器非正常关机(意外掉电、强制拔电)后etcd数据损坏。查看apiserver日志发现出现报错Errorwhiledialingdialtcp127.0.0.1:2379:connect:connectionrefused,2379是etcd的端口,那么apiserver是由于etcd无法连接而启动不了参考资料:https://blog.csdn.net/k
- 【k8s】K8S中的cordon、uncordon和drain 冻结节点、驱离pod
云川之下
kubernetesdocker容器cordonuncordon
Kubernetes(K8s)中使用Kubectl命令行工具管理Kubernetes集群。kubectl在$HOME/.kube目录中查找一个名为config的配置文件。可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其它kubeconfig文件。本文主要介绍Kubernetes(K8s)中kubectlcordon,drain,uncordon常用命令。1、Kub
- k8s容器访问宿主机或者集群外部服务
需求背景k8s的集群容器需要访问宿主机的某个服务(mysql或者其他类型的服务),或者其他外部远程设备的服务,但是服务不在集群当中访问外部服务访问远程外部服务,如下任选一个实现外部域名映射到内部service外部IP映射到内部Service访问当前Pod所在宿主机服务,如下任选一个实现在pod中挂载环境变量表示宿主机的IP,容器内部通过环境变量映射的IP访问服务如果是只访问当前宿主机服务,通过创建
- KubeSphere 镜像构建器(S2I)服务证书过期解决方案
KubeSphere 云原生
k8s容器平台kubesphere云计算
目前KubeSphere所有3.x.x版本,如果开启了DevOps模块并使用了镜像构建器功能(S2I)都会遇到证书过期问题。解决方法已开启DevOps模块下载这个更新S2I服务证书压缩包,上传到任一可以访问K8s集群的节点;把上传的压缩包解压进入解压后的目录执行更新证书的脚本./update-s2i-cert.sh#上传压缩包到可访问k8s集群的节点...#解压缩$tar-zxvfupdate-s
- Linux Ubuntu配置jdk的两种方法
没有胡子的猫
Linux工具javajdklinux
1.shell中自动安装openJDKjdk11sudoaptinstallopenjdk-11-jre-headlessjdk8sudoaptinstallopenjdk-8-jre-headless卸载sudoaptautoremoveopenjdk-11-jre-headless2.手动下载安装官网1.下载后解压到/opt/jdk13/2.修改配置文件sudogedit/etc/profil
- CNCF之毕业Projects简介
鬓戈
云原生云原生
CNCF组织管理着大量的云原生基础设施软件系统,如著名的k8s,不同的系统解决不同的技术点,也有一些系统是解决同一个问题的,形成一个自由竞争的关系,互相促进彼此创新进步,同时也给我们做技术选型带来了多样性和小小选择难点,我们有必要做一个简单的表格统计,方便我们从不同维度了解CNCF工程。1.工程总表序号工程状态工程数量1Graduated-毕业252Incubating-孵化373SANDBOX-
- java线程Thread和Runnable区别和联系
zx_code
javajvmthread多线程Runnable
我们都晓得java实现线程2种方式,一个是继承Thread,另一个是实现Runnable。
模拟窗口买票,第一例子继承thread,代码如下
package thread;
public class ThreadTest {
public static void main(String[] args) {
Thread1 t1 = new Thread1(
- 【转】JSON与XML的区别比较
丁_新
jsonxml
1.定义介绍
(1).XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标
- c++ 实现五种基础的排序算法
CrazyMizzz
C++c算法
#include<iostream>
using namespace std;
//辅助函数,交换两数之值
template<class T>
void mySwap(T &x, T &y){
T temp = x;
x = y;
y = temp;
}
const int size = 10;
//一、用直接插入排
- 我的软件
麦田的设计者
我的软件音乐类娱乐放松
这是我写的一款app软件,耗时三个月,是一个根据央视节目开门大吉改变的,提供音调,猜歌曲名。1、手机拥有者在android手机市场下载本APP,同意权限,安装到手机上。2、游客初次进入时会有引导页面提醒用户注册。(同时软件自动播放背景音乐)。3、用户登录到主页后,会有五个模块。a、点击不胫而走,用户得到开门大吉首页部分新闻,点击进入有新闻详情。b、
- linux awk命令详解
被触发
linux awk
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v]大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=val
- 各种语言比较
_wy_
编程语言
Java Ruby PHP 擅长领域
- oracle 中数据类型为clob的编辑
知了ing
oracle clob
public void updateKpiStatus(String kpiStatus,String taskId){
Connection dbc=null;
Statement stmt=null;
PreparedStatement ps=null;
try {
dbc = new DBConn().getNewConnection();
//stmt = db
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
矮蛋蛋
zookeeper
原文地址:
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
安装和配置详解
本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两
- tomcat数据源
alafqq
tomcat
数据库
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。
没有使用JNDI时我用要这样连接数据库:
03. Class.forName("com.mysql.jdbc.Driver");
04. conn
- 遍历的方法
百合不是茶
遍历
遍历
在java的泛
- linux查看硬件信息的命令
bijian1013
linux
linux查看硬件信息的命令
一.查看CPU:
cat /proc/cpuinfo
二.查看内存:
free
三.查看硬盘:
df
linux下查看硬件信息
1、lspci 列出所有PCI 设备;
lspci - list all PCI devices:列出机器中的PCI设备(声卡、显卡、Modem、网卡、USB、主板集成设备也能
- java常见的ClassNotFoundException
bijian1013
java
1.java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 添加包common-logging.jar2.java.lang.ClassNotFoundException: javax.transaction.Synchronization
- 【Gson五】日期对象的序列化和反序列化
bit1129
反序列化
对日期类型的数据进行序列化和反序列化时,需要考虑如下问题:
1. 序列化时,Date对象序列化的字符串日期格式如何
2. 反序列化时,把日期字符串序列化为Date对象,也需要考虑日期格式问题
3. Date A -> str -> Date B,A和B对象是否equals
默认序列化和反序列化
import com
- 【Spark八十六】Spark Streaming之DStream vs. InputDStream
bit1129
Stream
1. DStream的类说明文档:
/**
* A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous
* sequence of RDDs (of the same type) representing a continuous st
- 通过nginx获取header信息
ronin47
nginx header
1. 提取整个的Cookies内容到一个变量,然后可以在需要时引用,比如记录到日志里面,
if ( $http_cookie ~* "(.*)$") {
set $all_cookie $1;
}
变量$all_cookie就获得了cookie的值,可以用于运算了
- java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
bylijinnan
java
参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984
写了个java版的:
public class Print_1_To_NDigit {
/**
* Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
* 1.使用字符串
- Netty源码学习-ReplayingDecoder
bylijinnan
javanetty
ReplayingDecoder是FrameDecoder的子类,不熟悉FrameDecoder的,可以先看看
http://bylijinnan.iteye.com/blog/1982618
API说,ReplayingDecoder简化了操作,比如:
FrameDecoder在decode时,需要判断数据是否接收完全:
public class IntegerH
- js特殊字符过滤
cngolon
js特殊字符js特殊字符过滤
1.js中用正则表达式 过滤特殊字符, 校验所有输入域是否含有特殊符号function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
- hibernate使用sql查询
ctrain
Hibernate
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transa
- linux shell脚本中切换用户执行命令方法
daizj
linuxshell命令切换用户
经常在写shell脚本时,会碰到要以另外一个用户来执行相关命令,其方法简单记下:
1、执行单个命令:su - user -c "command"
如:下面命令是以test用户在/data目录下创建test123目录
[root@slave19 /data]# su - test -c "mkdir /data/test123" 
- 好的代码里只要一个 return 语句
dcj3sjt126com
return
别再这样写了:public boolean foo() { if (true) { return true; } else { return false;
- Android动画效果学习
dcj3sjt126com
android
1、透明动画效果
方法一:代码实现
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_main, container, fals
- linux复习笔记之bash shell (4)管道命令
eksliang
linux管道命令汇总linux管道命令linux常用管道命令
转载请出自出处:
http://eksliang.iteye.com/blog/2105461
bash命令执行的完毕以后,通常这个命令都会有返回结果,怎么对这个返回的结果做一些操作呢?那就得用管道命令‘|’。
上面那段话,简单说了下管道命令的作用,那什么事管道命令呢?
答:非常的经典的一句话,记住了,何为管
- Android系统中自定义按键的短按、双击、长按事件
gqdy365
android
在项目中碰到这样的问题:
由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成:
1、单击事件:就是普通key的单击;
2、双击事件:500ms内同一按键单击两次;
3、长按事件:同一按键长按超过1000ms(系统中长按事件为500ms);
4、组合按键:两个以上按键同时按住;
- asp.net获取站点根目录下子目录的名称
hvt
.netC#asp.nethovertreeWeb Forms
使用Visual Studio建立一个.aspx文件(Web Forms),例如hovertree.aspx,在页面上加入一个ListBox代码如下:
<asp:ListBox runat="server" ID="lbKeleyiFolder" />
那么在页面上显示根目录子文件夹的代码如下:
string[] m_sub
- Eclipse程序员要掌握的常用快捷键
justjavac
javaeclipse快捷键ide
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 写道 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可
- c++编程随记
lx.asymmetric
C++笔记
为了字体更好看,改变了格式……
&&运算符:
#include<iostream>
using namespace std;
int main(){
int a=-1,b=4,k;
k=(++a<0)&&!(b--
- linux标准IO缓冲机制研究
音频数据
linux
一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:A.缓存I/O使用了操作系统内核缓冲区,
- 随想 生活
暗黑小菠萝
生活
其实账户之前就申请了,但是决定要自己更新一些东西看也是最近。从毕业到现在已经一年了。没有进步是假的,但是有多大的进步可能只有我自己知道。
毕业的时候班里12个女生,真正最后做到软件开发的只要两个包括我,PS:我不是说测试不好。当时因为考研完全放弃找工作,考研失败,我想这只是我的借口。那个时候才想到为什么大学的时候不能好好的学习技术,增强自己的实战能力,以至于后来找工作比较费劲。我
- 我认为POJO是一个错误的概念
windshome
javaPOJO编程J2EE设计
这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。
&