pedaços de entrevista arquiteto e peças

https://blog.csdn.net/JasonDing1354/article/details/45641811?ops_request_misc=%7B%22request%5Fid%22%3A%22158194177519724839229345%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id = 158194177519724839229345 & biz_id = 0 & utm_source = distribute.pc_search_result.none-tarefa

 

protocolo TCP e UDP Qual é a diferença

TCP (Transfer Control Protocol) acrónimo, é um protocolo de transporte orientado para conexão para garantir que, antes de transmitir o fluxo de dados, os dois lados, em primeiro lugar estabelecer um canal de comunicação virtual. transmissão de dados pode raramente livre DE ERROS.

Sigla UDP (User Datagram Protocol), que é um protocolo sem conexão, UDP é usado para transferência de dados, cada segmento de dados é uma informação independente, incluindo a fonte completa e destino na rede para qualquer possível alcançou o caminho de destino, portanto, você pode chegar ao destino, eo tempo e abrangência do conteúdo chegar a um destino não pode ser garantida.

Então TCP UDP será mais tempo para estabelecer a conexão. Para relativamente UDP, TCP tem um maior nível de segurança e confiabilidade.

Tamanho do protocolo de transporte TCP não é limitada, uma vez que a ligação é estabelecida, tanto grande quantidade de dados pode ser transmitida de acordo com um certo formato, enquanto que o UDP é um protocolo fiável, o tamanho é limitado, não pode exceder 64 k por

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Por exemplo --- verdadeira existência de "duas pessoas na linha, a fim de forma rápida e fácil falar sobre a guerra no uso de linha de transmissão QQ, resultando em perda de dados dos dados em caso de falha de linha

 

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@

acordo de código aberto

GPL (GNU General Public License): GNU General Public License

LGPL (GNU Lesser General Public License): GNU Lesser General Public License

BSD

(Berkeley Software Distribution): Contrato de Licença Berkeley Software Distribution

MIT (Massachusetts Institute of Technology): Nome do MIT, do Instituto de Tecnologia de Massachusetts

Apache (Apache License): Contrato de Licença Apache

MPL (Mozilla Public License): Mozilla Public License

 

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

"Algoritmo de hash O que são comumente usados"

Adicionador 1. Hash: Hash é o chamado elemento de entrada aditivo constitui um resultado final de um combinado.

2. bit a bit de hash: este tipo de função Hash, usando a operação pouco diferentes (vulgarmente deslocar e EX-OR) para elemento de mistura suficiente de entrada

3. A multiplicação de hash: 33 * + de hash key.charAt (i)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Como TCP para garantir a transmissão confiável? Três vias aperto de mão?

Na conexão TCP, o fluxo de dados deve ser notificado aos outros na ordem correta. fiabilidade TCP é alcançado por um número de sequência e reconhecimento (ACK). conexão TCP é inicializado por um handshake de três vias. O objetivo do three-way handshake está ligado tanto ao número de série síncrona e número de confirmação e tamanho da janela TCP troca de informações. O primeiro é o cliente para iniciar uma ligação; representa um segundo servidor recebe o pedido do cliente; representa um terço cliente recebe um servidor de feedback.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 Vários métodos para alcançar fio

(1) herança de classe Thread, função override prazo

(2) aplicar Executel, reescrever função de execução

(3) aplicar a função de substituição chamada interface de mobilizável

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Como chamar espera () método? Se estiver usando um bloco ou ciclo? Por quê?

espera () método deve chamar o ciclo, porque quando o tempo de CPU thread para começar, e outras condições podem não atender, por isso, antes do tratamento, as condições de detecção de loop são satisfeitas será melhor.

wait (), notificar () e notifyAll () é um método de controle síncrono fornecido na classe Thread java.lang.Object para implementar a comunicação inter-thread. Espera ou esteira

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 Como entender o bloqueio distribuído?

Porque no trabalho diário, o servidor on-line é uma implantação distribuída de múltiplos, muitas vezes confrontados com a solução dos problemas de consistência de dados distribuídos no local, em seguida, iriam fazer uso de bloqueio distribuído para resolver estes problemas.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

.MYSQL optimização comum (optimização SQL, optimizar a estrutura da tabela)

otimização de SQL, otimização de mecanismo de mesa, otimização índice, cache de otimização de parâmetros

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

palavra-chave volátil, o fechamento

programação concorrente: problemas de atomicidade, o problema de visibilidade, problema de ordenação.

palavra-chave volátil pode garantir a visibilidade, pode proibir a palavra reordenamento instrução, mas não pode garantir a atomicidade. Visibilidade só pode garantir que cada leitura é valor atual, mas nenhuma maneira de garantir as operações atômicas voláteis em variáveis. Bloquear adicionar palavras-chave e tornar-se uma barreira de memória na declaração gerada.

implementações de bloqueio oferecer do que usando métodos sincronizados e declarações disponíveis para uma ampla gama de operação de bloqueio, pode de uma forma mais elegante de tratar problemas de sincronização rosca. Com método modificado sincronizado ou bloco de declarações após o código executar o desbloqueio automático, e nós precisamos usar o bloqueio de bloqueio de liberação manual

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Processos e fios:

valores processo em execução do programa (independência, dinâmico, simultaneidade), o fio refere-se ao processo de aplicação do fluxo de ordens. A diferença é a seguinte: 1 não compartilham memória entre processos 2. Criar o custo dos processos de alocação de recursos eram muito maiores, multi-threaded-lo em ambientes altamente simultâneas com alta eficiência.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Serialização e de-serialização:

Serialização refere-se a objectos java numa sequência de bytes, deserialização oposto. Java principalmente para a comunicação inter-thread, para alcançar o objeto passado. Apenas implementa a interface Externalizable o objeto de classe Serializable ou antes de ser serializado.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Diga cinco novos recursos introduzidos no JDK 1.8?

Java 8 é uma história no Java abrir novas versões do JDK 8 nas seguintes cinco características principais:

As expressões lambda; permitir função anônima como um objeto passando Fluxo API, tirar pleno partido da CPU multi-core moderno, você pode escrever um código muito simples; Data e API Time, finalmente, há uma estável e data e hora simples que você uso prolongado biblioteca disponível o método, agora, não pode ser estática, a interface do método padrão; notas repetidas, agora você

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @

define objetos quais métodos?

clone (), equals (), hashCode (), toString (), notify (), notifyAll (),

wait (), finalize (), getClass ()

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Qual é a diferença .Collection e coleções são?

Collection é um conjunto de interface básica framework Java;

Coleções é uma estrutura ferramenta fornece um conjunto de classes Java, que contém um grande número de métodos estáticos para coleta ou operação de retorno.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Descrito em sobrecarga Java e reescrita?

Sobrecarregando e reescrita permitem que você use o mesmo nome para diferentes funções, mas a sobrecarga é uma actividade de tempo de compilação, e reescrever é tempo de execução ativa. Você pode substituir os métodos, mas só pode substituir os métodos em uma subclasse na mesma classe. Rewrite deve ter herdado

Reescrevendo: 1, em uma subclasse pode ser reescrita para os métodos herdados da classe base para necessário. 2, um método de substituição método é substituído e deve ter o mesmo nome do método, tipo de retorno e lista de parâmetros. 3, não é possível utilizar o método substituído é mais rigoroso do que os métodos são acesso substituído.

Em caso de sobrecarga, o nome do método a ser o mesmo, mas não o mesmo número e tipo de parâmetros, tipo de retorno pode ser o mesmo ou diferente. Incapaz de voltar função sobrecarregada digitado como um critério de distinção.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

A diferença entre a corda e StringBuilder

1) variável e não variável: String imutável, cada execução do "+" nova situação irá criar um novo objeto, sem mudanças frequentes na string String, para poupar memória.

2) se o seguro multi-thread: StringBuilder e nenhum método mais genlock, por isso não thread-safe. Cordas e StringBuffer são thread-safe.

 

 

problemas de escalabilidade

 

o tempo de inatividade do servidor de análise

O tempo de inatividade ponto popular que é servidor carga insuportável, ou outras razões, como condição de travamento ou desligamento. O tempo de inatividade como ler? Sua Pinyin dangji, existem pessoas chamadas para baixo da máquina, falhas, congelamentos ou mesmo dizer diretamente assim como para entender mais. Quais são as causas mais comuns de tempo de inatividade normalmente têm?

  1, razões objectivas ambiente de servidor. Por exemplo, a falta de energia quarto servidor causada por falta de energia, a temperatura ambiente é demasiado elevada, resultando em falhas do servidor, o desligamento. No entanto, isso raramente acontece, em geral, porque, como Ding Feng sala de máquinas nova troca BGP e outro centro de dados, geralmente tem boas medidas preventivas, tais como circuitos de reposição, geradores de backup, refrigeração mecânica em tempo integral e natural, só pode termostato do sistema.

  2, servidor carga insuportável. Esta situação é a principal razão para o mais comum, aumento do tráfego do local, o envenenamento programa, sofreu grande escala alto consumo de ataques recursos do servidor, o que levou ao esgotamento dos recursos do servidor não pode carregar, e, finalmente, incapaz de responder a falhas.

  3, a aplicação não é razoável. Por exemplo, um fenômeno muito comum é devido ao considerar os custos, alguns proprietários costumam contratar baixo configuração de VPS, servidor de nuvem, etc., utilizado para construir o site, mas não há software para instalar e muitos outros grandes sites relacionados com a construção, ao mesmo tempo, vamos servidor para carros pode ser, assumir a carga de caminhões de grande porte, com resultados previsíveis, o tempo de inatividade é um lugar comum que deve falhar.

  Claro, uma causa comum de tempo de inatividade, existem muitos detalhes razões, tais como a configuração do ambiente impróprio, capturados em um erro de loop infinito no programa, os índices de banco de dados perdidos, o banco de dados será perdido e assim eles perdem um monte de CPU do servidor, memória e outros recursos, resultando em falhas do servidor tempo de inatividade e assim por diante. No entanto, a razão mais fundamental para o tempo de inatividade não é uma causa comum destas três categorias. Além da prevenção downtime multi-servidor e monitoramento baseado.

otimização de banco de dados

1, não use instrução SQL sub-consulta, como de exclusão do usuário onde uid não em ( SELECT id de ordem), porque o uso de sub-consulta o banco de dados para criar uma tabela temporária na memória, consumo de recursos, se houver duas tabelas e é freqüentemente associada com uma chamada, o melhor é estabelecer outra mesa em uma tabela de chave externa com um consultas de junção de instrução, tais como: o Excluir o usuário deixou juntar ao pedido no user.id = order.uid;
2, instrução SQL é melhor não aparecer "* "em vez de um campo conhecido, mesmo que você deseja consultar todos os campos tem que escrever todos os campos, porque o campo com um * em vez de uma tabela de banco de dados deve primeiro verificar o que os campos e, em seguida, consultar a instrução SQL, praticamente sem a adição de um significância de consultas;

3, índice razoável

      3.1 índice pode acelerar em grande medida a velocidade de recuperação de banco de dados, aparecendo principalmente no onde e juntar as colunas ou utilização Ordenar por classificação quando a velocidade é muito mais rápido (necessidade de julgar ou comparar ou classificar de tempo);

       3.2 No entanto, a indexação não é possível, o índice irá causar muito redundante, porque cada excluir, atualizar add irá atualizar o índice, o índice de muitas outras operações que resultem em consumo excessivo de recursos, muito pequenas mesas não precisava indexação, ninguém jamais viu em folhetos, bem como um diretório de dois bar.

A segunda coisa importante é a otimização da estrutura de mesa, também a este respeito são o seguinte resumo breve:

        carvão 1. seleccionar o maior número de propriedades de campo apropriados, pode ser usado um tipo de dados mínima de dados, tais como o código postal, o número de telefone de tais números podem ser de comprimento fixo (6), carvão (11), determinando se o sexo ou sexual texto pode tinyint; campo de atributo não é nulo quanto possível, para não determinou se o ar, um passo (expressão nula você quer expressar de outras maneiras, como -1) redutor; Se usarmos esse tipo de texto, de preferência por armazenamento sub-tabela;

        2. Informações gerais e não é comumente usado para armazenar pontos de informação tabela, como uma tabela local shopping usuário, apelido do usuário, avatar, senha de login da conta de usuário desses campos serão utilizados e interesses e hobbies do usuário, e cor favorita este campo é armazenado na folha de pontuação, eu acredito que as informações pessoais também podem Jingdong conta aberta no momento do registo, depois de ter feito nenhuma anotação dela

 

refatoração

[Definição] Código refatoração
  compreensão da refatoração de código: a premissa de não alterar as propriedades funcionais de sistemas de software / módulos incluídos, siga / uso de certas regras, tende a melhorar a estrutura interna. Suas mentiras valor no ciclo de vida do software, principalmente, manutenção e escalabilidade.

[] Código tempo refatoramento
  dependendo do tamanho da reconstrução do impacto do campo, que foram sequencialmente descrito de funções de nível de sistema e o nível da interface.

Em nível de sistema reconstrução
  1. sistema mais inchado, ligação chamada de negócios cambaleou complexo, difícil de realizar a manutenção normal;
  2. Os novos recursos adicionar custos significativos, a expansão difícil;
  3. sistema de infra-estrutura de tecnologia não pode satisfazer as necessidades de desenvolvimento de negócios, como gargalos de desempenho freqüente, não pode rapidamente adicionar nova lógica de negócios / modificação;
  4. chefe do novo escritório, e necessidade de Flag legislação;
-level API reconstrução
  1. mal projetado declaração da função:
      um nome de função não é padronizado, a falta de comentários, especialmente sim. função de função, um valor de retorno e parâmetros descritos;
      . parâmetros de entrada B e o parâmetro de saída não podem ser claramente distinguidos;
      . tipos de parâmetro C imprecisa, tais como números inteiros e tipo de ponto flutuante;
      . D número excessivo de parâmetros, maior do que 5;
      . e parâmetro modo irrazoável de transferência, tais como a transmissão e passados por valor de referência;
  alguns problemas 2. funções implementadas:
      uma ambigüidades variáveis, variáveis não utilizadas, variável não inicializada, impróprias inicializados;.
      B muitas linhas de código. , tais como a função da linguagem C em termos de um único conjunto de mais de 500 linhas de linhas de código, mesmo linhas 1000;
      C expressões complexas ;.
      lógica do algoritmo D: cenários de falha com base em razoável complexidade equalização espaço-tempo Heteroarilo graus;
      dependências externas excessivas E, o que resulta em um aumento na duração da chamada de interface ;.
      . F Repetiu-se um grande número de blocos de código;
      . L uso irracional de variáveis globais, macros funções em linha;
      . Funções de interface de fronteira difusa H;
[Código regras reconstrução]

Regulamento do Nível de reconstrução do sistema
é simples: a complexidade do sistema de reconhecimento (alta disponibilidade, alto desempenho, o IO-intensiva, o uso intensivo da CPU, objetos de aplicação), e então empregado como arquitetura adequada e simples;
aplicam-se: com base em seus negócios atuais e futuros características e tendências de desenvolvimento para a seleção arquitetura técnica;
evolução: arquitetura de tecnologia é dinâmico, em constante mudança como o desenvolvimento de negócios melhorado;
otimização de desempenho em todo o projeto do sistema sempre foi: referência post no blog "estratégia de otimização de desempenho do sistema - atualização contínua otimização"
API Regulamento do nível reconstrução
declaração razoável;
dever único;
substituição Richter;
alta coesão e baixo acoplamento,
programação orientada a objetos, programação orientada a falha;
manutenção, escalabilidade
[algumas notas sobre a reconstrução do sistema on-line]
      um novo sistema ou uma nova API on-line, inevitavelmente, introduziu desconhecido ou difícil de avaliar, antes do teste (a unidade de teste de ensaio integradas +) para cobrir o erro duro. A fim de garantir de segundo nível de reversão quando surgem problemas on-line, que geralmente precisam ser versão bem-sucedida de um serviço anterior como um serviço do rebaixamento upgrade.
5. cinza Compliance publicar princípios: a antiga API como a lógica padrão, a lógica da nova API como desclassificação da antiga API, usando táticas parte desvio do tráfego para a nova API.
6. Depois de um período de tempo para verificar, não há nenhum problema se a nova API, uma nova API será definido como a lógica padrão, a antiga API reservados para a lógica de rebaixamento.
 

arquitetos Gerais deve ser como controlar soluções de tecnologia de migração

 

https://blog.csdn.net/qq_16605855/article/details/80966363


 

 

 

 

 

Publicado 316 artigos originais · Louvor obteve 33 · vista 210 000 +

Acho que você gosta

Origin blog.csdn.net/yz18931904/article/details/104367583
Recomendado
Clasificación