静态资源目录在 /usr/local/tomcat/webapps
配置文件在 /usr/local/tomcat/conf/server.xml
静态资源目录在 /usr/local/tomcat/webapps
配置文件在 /usr/local/tomcat/conf/server.xml
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
默认的静态资源文件夹 在/var/lib/jetty/webapps/下
添加默认根context:在/var/lib/jetty/webapps/下添加ROOT文件夹
然后在ROOT文件夹添加index.html
即可提供默认主页访问
当然也可把war包放到webapps下自动解压访问
启动sprongboot jar 包时 有几个地方会读取配置
一是启动参数
二是启动目录下的application.yaml
三是jar包内部的application.yaml
所以其实一个jar包可以把基本功能设置
通过把配置文件 置于启动目录下 可完成运行前修改配置功能
java -jar common-server.jar –spring.config.local=application.properties
也可以通过 –spring.config.local 指定配置文件
docker 是容器化服务的实现
docker 分为三部分 镜像 本地机器 和 镜像服务中心
本地从镜像服务中心抽取镜像到本地 , 本地docker服务会维持着一个镜像管理服务。当运行期对应的镜像,就能以容器化方式启动对应的服务。
docker search nginx
向镜像中心搜索nginx的镜像
docker pull httpd
向镜像中心下载httpd镜像到本地
docker images
列出本机下载了的镜像列表
docker rmi 镜像id/name
删除下载到本地的镜像 i指的是image
docker run -d -p80:80 nginx
以daemon方式运行nginx镜像 并 指定容器的80 映射到本机的80端口
docker run -d -p8080:80 --name apache httpd
以daemon方式启动httpd镜像 并 指定容器80 映射到本地的8080端口 且起名为apache
docket run -d -p8080:80 --name apache httpd --volumes/(-v) ./app:/var/www/html/
将本地的./app 映射到 服务的 /var/www/html
docker start apache
启动指定的镜像服务
docker stop apache
以运行时指定的name 停止 指定容器服务
docker stop 562jggs92h4ff
以容器id 停止容器服务
docker ps
列出当前运行中的容器服务 (会显示容器id 端口映射 和别名)
docker ps -a
列出所有本机的容器服务 (包括停止了的)
docker rm 容器ID/name
删除本机容器服务
docker exec -it CONTAINER_ID/name /bin/sh
进入某个容器 并且 i 代表interactive交互式 输入流 和输出流 在当前shell交互
t 代表 tty 代表容器内一个终端 /bin/sh 执行某个命令 即进入shell模式
其他
docker help CMD 查看某个命令
docker inspect XXX
查看某个服务的所有情况 包括硬盘文件夹挂载信息
docker log -f XXX
一直跟踪并查看服务日志
以phph命令运行
php arisan serve 部署命令
php artisan serve --port 8090 指定端口
php artisan servce --host 127.0.0.1 指定主机
第二种以容器方式运行
把整个项目复制到nginx 或者 apache web 网站静态资源目录
静态资源入口指向 public/index.php
jenkins 是一个服务端服务持续集成的框架,用于管理项目部署脚本。
最简单的安装方法下载 jenkins war包到本地 通过 java -jar 部署 因其内部自带netty http 服务 用网站进入jenkins 进行项目管理
java -jar jenkins.war --httpPort=8280
在端口8280启动jenkins服务
所有C# 自定义windows form 控件继承自 UserControl 在design中设计界面 在partial class中定义自定义属性和行为
注解解析
[Category("Text"),
Browsable(true),
DefaultValue(typeof(Image), null),
Description("图标")]
public Image Icon { get; set; }
Category 对应分类
Browsable 对应是否能看到
然后还有默认值和描述
这个注解使代码和 设计界面能连通
组件生命周期
form 打开:
• Control.HandleCreated
• Control.BindingContextChanged
• Form.Load
• Control.VisibleChanged
• Form.Activated
• Form.Shown
from 关闭:
• Form.Closing
• Form.FormClosing
• Form.Closed
• Form.FormClosed
• Form.Deactivate
control ,change focus:(使用 tab ,shift + tab等等,或是调用Select,SelectNextControl,或是使用当前form的ActiveControl)
• Enter
• GotFocus
• Leave
• Validating
• Validated
• LostFocus
control ,change focus:(使用鼠标,或是通过调用Focus方法)
• Enter
• GotFocus
• LostFocus
• Leave
• Validating
• Validated
特别是load 事件 可以再InitializeComponent 绑定加载事件 然后 添加渲染后回调操作
添加自定义事件
public delegate void PageChangeDelegate();//
/// <summary>
/// 当前页改变时发生的事件
/// </summary>
[Description("当前页改变时发生的事件"), Category("分页设置")]
public event PageChangeDelegate PageChanged;
在具体的业务流程中调用
private void btnFirst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//设置当前页
CurrentPage = 1;
//设置上一页、下一页是否可用以及当前页按钮字体颜色
SetBtnPrePageAndBtnNextPage();
//调用注册事件
if (PageChanged != null) PageChanged();
}
应用程序安装Newtonsoft.Json
序列化
JsonConvert.SerializeObject(o);
反序列化
JsonConvert.DeserializeObject<T>(jsonstr) ;
T为指定的泛型
反序列化为JObject
JObject.Parse(jsonstr)
C# 可以用dynamic作为动态类型的声明 然后程序可以访问其动态属性
dynamic keyAndValue = new T();
Console.WriteLine(keyAndValue.key)
其中key为动态属性 程序不知道keyAndValue对象是否有key属性